home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / talk_sou / my_libra / myutilit.uni < prev    next >
Text File  |  1992-04-20  |  3KB  |  133 lines

  1. unit MyUtilities;
  2.  
  3. { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
  4.  
  5. interface
  6.  
  7.     const
  8.         about_dialog_ID = 128;
  9.         help_dialog_ID = 129;
  10.  
  11.     var
  12.         sysenv: sysEnvRec; { * - Setup by InitUtilities }
  13.         system7: boolean; { * }
  14.         has_waitNextEvent: boolean; { * }
  15.         has_appleEvents: boolean; { * }
  16.         has_findfolder: boolean; { * }
  17.         has_newStdFile: boolean; { * }
  18.         has_HelpMgr: boolean; { * }
  19.         has_colorQD: boolean; { * }
  20.         in_foreground: boolean; { * }
  21.         app_resfile: integer; { * }
  22.         about_dialog, help_dialog: dialogPtr;
  23.  
  24.     procedure InitUtilities;
  25.     function WaitGetNextEvent (em: integer; var er: eventRecord; sleep: longInt; rgn: rgnHandle): boolean; { * }
  26.     function CheckCancel: boolean;
  27.     procedure DoHelp;
  28.     procedure DoAbout;
  29.     function SimpleClose (wp: windowPtr): boolean;
  30.         { return true if you have to do something }
  31.  
  32. implementation
  33.  
  34.     uses
  35.         MyTypes, Traps, MyUtils;
  36.  
  37. {$S Init}
  38.     procedure InitUtilities;
  39.         var
  40.             oe: OSErr;
  41.             gv: longInt;
  42.     begin
  43.         about_dialog := nil;
  44.         help_dialog := nil;
  45.         app_resfile := CurResFile;
  46.         oe := SysEnvirons(kSysEnvironsVersion, sysEnv);
  47.         system7 := sysenv.systemVersion >= $0700;
  48.         has_colorqd := sysenv.hasColorQD;
  49.         has_waitNextEvent := TrapAvailable(_WaitNextEvent);
  50.         in_foreground := true;
  51.         oe := Gestalt(gestaltAppleEventsAttr, gv);
  52.         has_appleEvents := (oe = noErr) and (gv = 1);
  53.         oe := Gestalt(gestaltFindFolderAttr, gv);
  54.         has_findfolder := (oe = noErr) and (BTST(gv, gestaltFindFolderPresent));
  55.         oe := Gestalt(gestaltStandardFileAttr, gv);
  56.         has_newStdFile := (oe = noErr) and (BTST(gv, gestaltStandardFile58));
  57.         oe := Gestalt(gestaltHelpMgrAttr, gv);
  58.         has_HelpMgr := (oe = noErr) and (BTST(gv, gestaltHelpMgrPresent));
  59.     end;
  60.  
  61. {$S}
  62.     function WaitGetNextEvent (em: integer; var er: eventRecord; sleep: longInt; rgn: rgnHandle): boolean;
  63.     begin
  64.         if has_waitNextEvent then begin    {put us to sleep forever under MultiFinder}
  65.             WaitGetNextEvent := WaitNextEvent(em, er, sleep, nil);
  66.         end
  67.         else begin
  68.             SystemTask;                    {must be called if using GetNextEvent}
  69.             WaitGetNextEvent := GetNextEvent(em, er);
  70.         end;
  71.     end;
  72.  
  73. {$S Util2}
  74.     function CheckCancel: boolean;
  75.         var
  76.             er: eventRecord;
  77.     begin
  78.         if GetNextEvent(everyEvent, er) then
  79.             with er do
  80.                 CheckCancel := (what = keyDown) and (BAND(message, charCodeMask) = ord('.')) and (BAND(modifiers, cmdKey) <> 0)
  81.         else
  82.             CheckCancel := false;
  83.     end;
  84.  
  85. {$S Util2}
  86.     procedure DoAbout;
  87.     begin
  88.         if about_dialog <> nil then begin
  89.             if FrontWindow <> about_dialog then
  90.                 SelectWindow(about_dialog);
  91.         end
  92.         else begin
  93.             UseResFile(app_resfile);
  94.             SetVersionParamText('', '');
  95.             about_dialog := GetNewDialog(about_dialog_id, nil, POINTER(-1));
  96.         end;
  97.     end;
  98.  
  99. {$S Util2}
  100.     procedure DoHelp;
  101.         var
  102.             a: integer;
  103.     begin
  104.         if help_dialog <> nil then begin
  105.             if FrontWindow <> help_dialog then
  106.                 SelectWindow(help_dialog);
  107.         end
  108.         else begin
  109.             UseResFile(app_resfile);
  110.             SetVersionParamText('', '');
  111.             help_dialog := GetNewDialog(help_dialog_id, nil, POINTER(-1));
  112.         end;
  113.     end;
  114.  
  115. {$S Util2}
  116.     function SimpleClose (wp: windowPtr): boolean;
  117.         { return true if you have to do something }
  118.     begin
  119.         if wp = about_dialog then begin
  120.             DisposDialog(about_dialog);
  121.             about_dialog := nil;
  122.             SimpleClose := false;
  123.         end
  124.         else if wp = help_dialog then begin
  125.             DisposDialog(help_dialog);
  126.             help_dialog := nil;
  127.             SimpleClose := false;
  128.         end
  129.         else
  130.             SimpleClose := true;
  131.     end;
  132.  
  133. end.